package thread;


import java.util.Scanner;

/**
 * 线程提供了一个静态方法:
 * static void sleep(long ms)
 * 该方法可以让执行这个方法的线程进入阻塞状态执行毫秒
 * 超时后线程会主动回到RUNNABLE状态再次开始并发
 */
public class SleepDemo {
    public static void main(String[] args) {
     /*   System.out.println("程序开始了");

            扩展代码，实现倒计时程序
            要求:
            程序启动后在控制台上输入一个数字，然后从该数字开始每秒递减，到0时输出时间到。
         */
        /*
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        for(int num = scanner.nextInt();num>0;num--) {
            System.out.println(num);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
        }
        System.out.println("时间到");
        System.out.println("程序结束了");*/


    /*    Scanner scanner = new Scanner(System.in);

        // 提示用户输入一个数字
        System.out.print("请输入一个非负整数：");
        int number = scanner.nextInt();

        // 检查输入是否为非负数
        if (number < 0) {
            System.out.println("请输入一个非负整数！");
            return;
        }

        // 使用 for 循环进行倒计时
        for (int i = number; i >= 0; i--) {
            System.out.println(i);

            try {
                Thread.sleep(1000); // 线程休眠1秒
            } catch (InterruptedException e) {
                System.out.println("倒计时被打断！");
                return;
            }
        }

        System.out.println("倒计时结束！");
    }*/

        Scanner scanner = new Scanner(System.in);

        // 提示用户输入一个数字
        System.out.print("请输入一个正整数：");
        int number = scanner.nextInt();

        // 检查输入是否为非负数，如果用户输入的是负数（number < 0），
        // 程序将输出提示信息并使用 return 提前结束 main 方法，不再继续执行后续代码。
        if (number < 0) {
            System.out.println("请输入一个非负整数！");
            return;
        }

        // 开始倒计时
        while (number >= 0) {
            System.out.println(number);
            number--;
            //try-catch：捕获可能发生的 InterruptedException 异常，
            // 这是 sleep() 方法可能抛出的异常，通常是因为线程被中断（比如被其他线程打断）；
            // 当 while 循环结束（即 number 减到 -1），会执行这一句，输出提示信息表示倒计时完成。

            try {
                Thread.sleep(1000); // 睡眠1秒
            } catch (InterruptedException e) {
                System.out.println("倒计时被打断！");
                return;
            }
        }

        System.out.println("倒计时结束！");
    }
}